The primitive data type is a basic or built-in type of the data type system. It is represented by an instance of the PrimitiveDataType Class.
The ValueType Property contains the .NET type of values represented by that instance. It can be, for example, System.Byte type.
The OPC UA Complex Data extension contains intrinsic data type dictionaries that map specific standard and commonly used data types to primitive data types. For details, refer to OPC UA Data Type Systems. You can therefore expect these primitive data types to appear in the complex data that you get from the server. Conversely, when you are sending some complex data to the server, your choice of primitive data types is limited by what the server supports.